金仓数据库Kingbase ES如何进行增量备份与恢复 | 您所在的位置:网站首页 › 人大金仓 备份时显示权限不够 › 金仓数据库Kingbase ES如何进行增量备份与恢复 |
背景:在数据库运维过程中对大量数据进行备份,每次全量备份,随着业务数据不断积累,全量备份后的文件大小也会逐渐增加,需要占用大量的存储空间,这种情况下如果能对数据进行增量备份就显得格外重要。增量备份按备份的粒度一般可分为文件级别的增量备份和块级别的增量备份。 增量备份仅选择上一次全量或差异或增量备份后,发生了变化的文件或数据块。优点是更加地节省空间。缺点是还原时,需要本次增量备份以及前次备份、再前次备份、直到串行依赖到一次全量备份。 文件增量备份,备份的对象是发生变化的数据文件。块增量备份,备份的对象是发生变化的数据块,备份的粒度比文件增量备份要更小。 本次主要探讨如果使用sys_rman工具在数据库单机本地进行增量备份 一、文件增量备份本工具包含两个可执行程序和一个配置文件: sys_rman核心文件,二进制可执行文件 sys_backup.sh 脚本文件,协助管理员完成配置、调度工作 sys_backup.conf 配置调度脚本对应的配置文件 准备 1、在kingbase.conf中对以下两项配置进行修改 archive_mode=on #保证此项设置为on,开启归档模式 archive_command #放开注释即可,运行时脚本会自动去修改此项 wal_level =logical #设置为logical或者replica 2、拷贝安装目录./ Server/share目录下配置文件的模板sys_backup.conf到Server/bin,并修改如下配置 #file: sys_backup.conf # target db style enum: single/cluster _target_db_style="single" # 数据库部署模式,single表示单机,cluster表示集群 _one_db_ip="192.168.28.37" # 数据节点IP _repo_ip="192.168.28.37" # 备份服务器IP,如果在单机本地备份,需确保#_repo_ip的值和_one_db_ip相等 # OS user name of database _os_user_name="kingbase" #数据库的宿主用户 # !!!! dir to store the backup files # should be accessable for the OS user _repo_path="/home/kingbase/kbbr_repo" #存储备份文件的目录,需有写入权限 # !!! these follow 4 parameter ONLY for single style # data dir of single _single_data_dir="/home/kingbase/ES/V8_single/data" #数据库data目录地址 # bin dir of single _single_bin_dir="/home/kingbase/ES/V8_single/Server/bin" #数据库bin目录地址 # database user of single _single_db_user="system" #数据库用户名 # database port of single _single_db_port="54321" #数据库端口3、配置完成后进行初始化操作 [test@4-34 db]$ ./Server/bin/sys_backup.sh init Please input password ... [email protected]'s password: # generate single sys_rman.conf...DONE # update single archive_command with sys_rman.archive-push...DONE # create stanza and check...(maybe 60+ seconds) # create stanza and check...DONE # initial first full backup...(maybe several minutes) # initial first full backup...DONE # Initial sys_rman OK. 'sys_backup.sh start' should be executed when need back-rest feature.初始化完成后会在kbbr_repo目录中生成如下文件 kbbr_repo -- archive #归档日志目录 -- backup #备份集存放目录 -- sys_rman.conf 备份 1、文件增量备份前需执行一次全量备份 ./Server/bin/sys_rman --config=/home/test/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --archive-copy --type=full backup 2022-03-03 15:55:41.594 P00 INFO: backup command begin 2.27: --archive-copy --band-width=0 --cmd-ssh=/home/test/kingbase/Server/bin/sys_securecmd --compress-level=3 --compress-type=gz --config=/home/test/kingbase/kbbr_repo/sys_rman.conf --exec-id=385969-922a2e2c --kb1-path=/home/test/kingbase/data --kb1-port=52744 --kb1-user=system --log-level-console=info --log-level-file=info --log-path=/home/test/kingbase/Server/log --log-subprocess --process-max=4 --repo1-path=/home/test/kingbase/kbbr_repo --repo1-retention-full=5 --stanza=kingbase --type=full 2022-03-03 15:55:42.814 P00 INFO: execute non-exclusive sys_start_backup(): backup begins after the next regular checkpoint completes 2022-03-03 15:55:43.315 P00 INFO: backup start archive = 000000010000000000000007, lsn = 0/7000028 2022-03-03 15:55:44.405 P01 INFO: backup file /home/test/kingbase/data/base/16056/2838 (968KB, 1%) checksum 7a2d8c122f0788dd3d3237891bff5af8b6336d86 2022-03-03 15:55:44.405 P04 INFO: backup file /home/test/kingbase/data/base/1/2838 (968KB, 3%) checksum 0e06f887299853a27ba4f85509c2fc07ef55b20b 2022-03-03 15:55:45.983 P01 INFO: backup file /home/test/kingbase/data/.wallet/tbcolkey.kr (0B, 100%) 2022-03-03 15:55:45.985 P00 INFO: execute non-exclusive sys_stop_backup() and wait for all WAL segments to archive 2022-03-03 15:55:46.286 P00 INFO: backup stop archive = 000000010000000000000007, lsn = 0/70000F8 2022-03-03 15:55:46.290 P00 INFO: check archive for segment(s) 000000010000000000000007:000000010000000000000007 2022-03-03 15:55:46.331 P00 INFO: new backup label = 20220303-155542F 2022-03-03 15:55:46.395 P00 INFO: full backup size = 49.4MB, file total = 1731 2022-03-03 15:55:46.396 P00 INFO: backup command end: completed successfully (4813ms) 2022-03-03 15:55:46.396 P00 INFO: expire command begin 2.27: --config=/home/test/kingbase/kbbr_repo/sys_rman.conf --exec-id=385969-922a2e2c --log-level-console=info --log-level-file=info --log-path=/home/test/kingbase/Server/log --repo1-path=/home/test/kingbase/kbbr_repo --repo1-retention-full=5 --stanza=kingbase 2022-03-03 15:55:46.400 P00 INFO: expire command end: completed successfully (4ms)2、文件增量备份 ./Server/bin/sys_rman --config=/home/test/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --archive-copy --type=incr backup 3、查看备份集 [test@4-34 db]$ /home/test/kingbase/Server/bin/sys_rman --config=/home/test/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase info stanza: kingbase status: ok cipher: none db (current) wal archive min/max (V008R006C005B0041): 000000010000000000000004/00000001000000000000000C full backup: 20220303-152618F timestamp start/stop: 2022-03-03 15:26:18 / 2022-03-03 15:26:21 wal start/stop: 000000010000000000000005 / 000000010000000000000005 database size: 65.4MB, database backup size: 65.4MB repo1: backup set size: 7.2MB, backup size: 7.2MB full backup: 20220303-155542F timestamp start/stop: 2022-03-03 15:55:42 / 2022-03-03 15:55:46 wal start/stop: 000000010000000000000007 / 000000010000000000000007 database size: 65.4MB, database backup size: 65.4MB repo1: backup set size: 7.2MB, backup size: 7.2MB incr backup: 20220303-155542F_20220303-162718I timestamp start/stop: 2022-03-03 16:27:18 / 2022-03-03 16:27:21 wal start/stop: 00000001000000000000000C / 00000001000000000000000C database size: 100MB, database backup size: 55MB repo1: backup set size: 11.3MB, backup size: 4.7MB backup reference list: 20220303-155542F 二、块级别增量备份块级别的增量备份依赖ktrack插件,启用插件的方法如下: 将 ktrack 追加到 kingbase.conf 的 shared_preload_libraries 配置项中,同时新增一行设置 ktrack.map_size,单位为MB,ptrack.map为备份文件的容量,最大值限制为32GB,需重启才能生效,官方建议设置为data目录预估容量的千分之一,0代表删除map三个文件并关闭该功能。 1、打开kingbase.conf配置文件,加入如下配置: shared_preload_libraries = 'xxxx,xxxxxxx,ktrack' ktrack.map_size = 10242、启动数据库后ksql连接到数据库服务,执行如下命令: create extension ktrack; 基本原理 执行增量块备份有三个关键步骤,首先执行sys_start_backup,然后找到自该增量块备份所依赖的全量备份时返回的LSN以来发生改变的数据块,并存储这些数据块,最后执行sys_stop_backup并归档备份期间的wal日志。 约束和限制 1. 本次增量块备份与其依赖的上次备份必须在同一时间线上;时间线发生切换后,必须先做一次全量备份,才可以做增量块备份。 2. 本次增量块备份依赖的上次备份必须是在ktrack启用之后做的备份,这样才能保证ktrack记录了完整的块变化信息。 3. wal_level >= replica 4. ktrack.map_size最大可设置为32GB(GUC可修改) 5. 不支持offline增量块备份 6. 文件级别的增量备份(incr)、差异备份(diff)不能基于块级别的增量备份(blkincr) 操作方法 1、启动ktrack插件 2、使用sys_rman工具进行全量备份 ./Server/bin/sys_rman --config=/home/test/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --archive-copy --type=full backup 3、使用sys_rman工具进行块备份 ./Server/bin/sys_rman --config=/home/test/kingbase/kbbr_repo/sys_rman.conf --stanza=kingbase --archive-copy --type= blkincr backup 块级别的备份链: ● full--->blkincr ● full--->incr--->incr--->blkincr ● full--->diff--->blkincr ● full--->blkincr--->blkincr 说明: Full是指全量备份,incr是指文件级增量备份,diff是指文件级差异备份,blkincr是指块级别的增量备份 三、还原注意事项 1、只能在数据库节点上进行还原操作。 2、还原完成数据库启动后,请及时手动清空还原后data目录下kingbase.auto.conf文件内容。 3、还原前需要确保kingbase进程已经停止。 还原方式 1、使用默认还原进行进行还原,该方法会自动还原所有备份集。 ./sys_rman --config=/home/test/db/kbbr_repo/sys_rman.conf --stanza=kingbase restore 2、指定备份集还原,该还原方式会还原指定的备份集和其依赖的备份。 a、查看备份集,获取备份集名称 ./sys_rman --config=/home/test/ db/kbbr_repo/sys_rman.conf --stanza=kingbase info b、使用-set指定备份集名称,并同时使用--type=time和—target指定备份集结束的时间点 ./sys_rman --config=/home/test/ db/kbbr_repo/sys_rman.conf --stanza=kingbase -- set='20220303-155542F_20220303-203954I' --type=time --target='2022-03-03 20:40:58' restore 【 更 多 人 大 金 仓 数 据 库 信 息 , 详 见https://help.kingbase.com.cn/ 】 |
CopyRight 2018-2019 实验室设备网 版权所有 |